package timbap.visualizer.api.plugin.container;

import timbap.visualizer.api.context.messaging.TimeCodeListener;

/**
 * The <code>ModeController</code> interface is the base
 * interface for plugin forks that listen to a time code
 * and publish switch commands to their parent plugins.
 *
 * @author  Andreas Pabst
 * @see     timbap.visualizer.api.plugin.container.PluginSwitchCommandListener
 * @see     timbap.visualizer.api.plugin.container.PluginSwitch
 */
public interface ModeController extends TimeCodeListener,
                                        PluginSwitchCommandPublisher,
										PluginFork {

    ModeController getNextModeController();

    ModeController getPreviousModeController();

    void setNextModeController(ModeController pNextModeController);

    void setPreviousModeController(ModeController pPrevModeController);
/*
    public boolean isSwitchToNextModeRequested();

    public boolean isSwitchToNextModeConfirmed();

    public void requestSwitchToNextMode();
*/
}